Software-Defined Networking (SDN) is an approach to computer networking that allows network administrators to manage network services through abstraction of lower-level functionality. This is done by decoupling the system that makes decisions about where traffic is sent (the control plane) from the underlying systems that forward traffic to the selected destination (the data plane). In such a system, a network controller, which is typically deployed as a cluster of server nodes, has the role of the control plane and is coupled to one or more network elements that have the role of the data plane. Each network element may be implemented on one or multiple network devices. The control connection between the network controller and network elements is generally a TCP/UDP based communication. The network controller communicates with the network elements using an SDN protocol (e.g., OpenFlow, I2RS, etc.).
For implementing SDN, the Open Networking Foundation (ONF), an industrial consortium focusing on commercializing SDN and its underlying technologies, has defined a set of open commands, functions, and protocols. The defined protocol suites are known as the OpenFlow (OF) protocol. The network controller, acting as the control plane, may then program the data plane on the network elements by causing packet handling rules to be installed on the forwarding network elements using OF commands and messages. These packet handling rules may have criteria to match various packet types as well as actions that may be performed on those packets. The forwarding plane includes forwarding tables (e.g., flow tables, group tables) which may be distributed across multiple data-path network elements.
In a typical deployment, the SDN controller can collect real-time or near real-time statistics associated with the behavior of flows processed at the data plane. These statistics may be requested by overlaying applications and used to determine a state of the network. For example, the north bound applications may need to retrieve a byte count and a packet count for each flow processed at the data plane. The application may then determine: (1) whether these quantities (e.g., flow's packet/byte aggregate count) exceed a given threshold; (2) whether there is a burst in traffic during a given time window for a given flow; and/or (3) whether a flow has exceeded an allowed time-limit and should be considered an Elephant flow.
In current approaches, the control plane (i.e., the network controller) periodically sends statistics requests to the different network devices including the forwarding network elements and retrieves the statistics for the desired flows. The network controller then receives responses from the forwarding network elements including the requested statistics. These messages are used to gather flow statistics from the forwarding network elements. For this purpose, the control network providing connectivity between the network controller and the forwarding network elements is used continuously to transmit the requests and responses for the statistics. In a large scale deployment, where millions of such multi-part requests for statistics are being sent, the bandwidth requirement on the control network can be enormous.